<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <script type="text/javascript">
    let person = {
      name:'aaa',
      sex:'男'
    }

    let aaa = 18;
    Object.defineProperty(person,'age',{
      /*value:aaa,
      enumerable:true,//控制属性是否可枚举
      writable:true,//控制属性是否可以修改
      configurable:true,//控制属性是否可删除*/
      get:function () {
        console.log('age属性被访问')
        return ++aaa;
      },
      set(v) {
        console.log('age属性被修改，且值是：',v)
        aaa = v;
      }
    })

    //通过Object.defineProperty方式定义的属性，获取值的方法有两种1.enumerable 2.get方法
    //通过Object.defineProperty方式定义的属性，修改值的方法有两种1.writable 2.set方法

    /*
    * 数据代理，通过一个对象代理另一个对象中属性的操作
    * */

    console.log(person)
  </script>

</body>
</html>
